import MapComponent from '@/pages/map/map.vue';
import { request, initBaseUrl, getFullImageUrl } from '../../utils/request';
import Header from '@/components/common/Header.vue';
import { wechatLogin } from '@/utils/authUtils';
import authWin from '@/components/authWin/authWin.vue';


export default {
  components: {
    MapComponent,
    Header,
    authWin

  },
  data() {
    return {
      isBaseUrlReady: false,
      funcItemsone: [],
      funcItemstwo: [],
      securityItemsone: [],
      securityItemstwo: [],
      headerData: {
        logo: '',
        title: '',
        subtitle: '',
        moreIcon: '',
        bt_text: '',
        bt_desc: ''
      },
      // 添加地图所需数据
      latitude: 0,
      longitude: 0,
      markers: [],
      selectedAddress: '', // 当前选中的地址
      // 添加伙伴数据字段
      nearbyPartners: 0,
      fastestOrderTime: 0,
      auth: false
    }
  },
  async onLoad() {
    await initBaseUrl();
    this.isBaseUrlReady = true;
    await this.loadFuncItems();
    await this.loadSecurityItems();
    await this.loadHeaderData();
    // 初始化地图位置
    this.initMapLocation();
    // 加载伙伴数据
    await this.loadPartnerData();
    await this.fetchUserInfo()
    wechatLogin();
  },

  created() {
    // 监听位置更新事件
    this.locationUpdatedHandler = this.updateLocation.bind(this);
    this.$bus.$on('locationUpdated', this.locationUpdatedHandler);
  },

  destroyed() {
    // 移除事件监听
    this.$bus.$off('locationUpdated', this.locationUpdatedHandler);
  },
  methods: {
    getFullImageUrl,

    // 接收来自map-page的位置更新
    updateLocation(data) {
      // 更新经纬度和地址
      this.latitude = Number(data.latitude) || 0;
      this.longitude = Number(data.longitude) || 0;
      this.selectedAddress = data.address;
      
      // 更新地图标记
      this.markers = [{
        id: 1,
        latitude: this.latitude,
        longitude: this.longitude,
        title: '选中位置',
        width: 30,
        height: 30
      }];
      
      // 刷新伙伴数据
      this.loadPartnerData();
      
      console.log('位置更新成功:', data.address);
    },

    navigateToRelease(type = '') {
      // 检查是否实名认证
      if (!this.auth) {
        // 显示实名认证弹窗
        this.$refs.authWinRef.openPopup();
        return;
      }

      console.log('参数：');
      console.log(type);
      // 确保中文正确编码
      const encodedType = type ? encodeURIComponent(type) : '';
      uni.navigateTo({
        url: `/pages/release/position-select?type=${encodedType}`
      });
    },
    async loadFuncItems() {
      try {
        const res = await request({
          url: '/Index/getFuncItems',
          method: 'GET'
        });
        this.funcItemsone = res.data.slice(0, 2);
        this.funcItemstwo = res.data.slice(2, 4);
      } catch (error) {
        console.error('功能模块加载失败:', error);
      }
    },
    async loadSecurityItems() {
      try {
        const res = await request({
          url: '/Index/getSecurityItems',
          method: 'GET'
        });
        this.securityItemsone = res.data.slice(0, 2);
        this.securityItemstwo = res.data.slice(2, 4);
      } catch (error) {
        console.error('保障数据加载失败:', error);
      }
    },
    async loadHeaderData() {
      try {
        const res = await request({
          url: '/Index/getHeaderData',
          method: 'GET'
        });
        this.headerData = res.data;
      } catch (error) {
        console.error('头部数据加载失败:', error);
      }
    },
    // 添加地图初始化方法
    initMapLocation() {
      // 获取当前位置
      uni.getLocation({
        type: 'gcj02',
        success: (res) => {
          this.latitude = res.latitude;
          this.longitude = res.longitude;
          // 设置标记点
          this.markers = [{
            id: 1,
            latitude: res.latitude,
            longitude: res.longitude,
            title: '当前位置',
            width: 30,
            height: 30
          }];
        },
        fail: (err) => {
          console.error('获取位置失败:', err);
          // 设置默认位置（北京）
          this.latitude = 39.9042;
          this.longitude = 116.4074;
          this.markers = [{
            id: 1,
            latitude: 39.9042,
            longitude: 116.4074,
            title: '默认位置',
            width: 30,
            height: 30
          }];
        }
      });
    },
    // 添加标记点点击事件处理
    handleMarkerTap(address) {
      console.log('点击了标记点:', address);
      uni.showToast({
        title: '当前位置: ' + address,
        icon: 'none'
      });
    },
    // 添加加载伙伴数据的方法
    async loadPartnerData() {
      try {
        const res = await request({
          url: '/Index/getPartnerData', // 假设的后端API接口
          method: 'GET',
          data: {
            latitude: this.latitude,
            longitude: this.longitude
          }
        });
        this.nearbyPartners = res?.data?.nearbyPartners || 0;
        this.fastestOrderTime = res?.data?.fastestOrderTime || 3;
      } catch (error) {
        console.error('伙伴数据加载失败:', error);
        // 设置默认值
      }
    },

    // 获取用户信息并赋值
    async fetchUserInfo() {
      try {
        const res = await request({
          url: '/User/info',
          method: 'GET'
        });

        if (res.code === 200 && res.data) {
          const userInfo = res.data;
          this.auth = userInfo.realname_verified === 1 ? true : false;
          
          // 不再在页面加载时自动弹出实名认证弹窗
          // 实名认证检查将只在用户主动操作需要实名认证的功能时进行
        }
      } catch (err) {
        console.error('获取用户信息错误:', err);
        // 尝试从本地存储加载

      }
    },

  }
}